
class Constant:
    BASIC_SHEET = '@基础配置'
    CFG_ITEM = '配置项'
    SRC_DB_TYPE = '源数据库类型'
    SRC_DB_ADDR = '源数据库地址'
    SRC_DB_USER = '源数据库用户名'
    SRC_DB_PASSWORD = '源数据库密码'
    SRC_DB_CHARACTER_SET = '源数据库字符集'
    TGT_DB_TYPE = '目标数据库类型'
    TGT_DB_ADDR = '目标数据库地址'
    TGT_DB_USER = '目标数据库用户名'
    TGT_DB_PASSWORD = '目标数据库密码'
    TGT_DB_CHARACTER_SET = '源数据库字符集'
    SRC_DB_CONN_STR = '源数据库连接串'
    AUTO_CREATE_DBLINK = '自动创建数据链'
    TGT_DB_CONN_STR = '目标数据库连接串'
    BASIC_DBLINK = '基础数据链'
    VERSION = '版本信息'
    SEQ_NO = '序号'
    PROJECT_NAME = '项目名'
    LAST_MODIFIER = '最后修改人'
    TGT_TABLE = '目标表'
    TGT_TABLE_FILTER = '目标表筛选条件'
    SRC_TABLE = '数据源'
    SRC_TABLE_FILTER = '数据源筛选条件'
    CONV_COLUMNS = '转码字段'
    CUSTOM_SYNC_RULE = '自定义同步规则'
    SYNC_STRATEGY = '同步策略'
    DB_LINK = '数据库链'
    SYNC_SWITCH = '同步开关'
    SYS_STATUS = '系统状态'
    REMARK = '备注说明'
    REPLACE = '替换'
    MERGE = '合并'
    DELETE = '删除'
    ENABLE = '开启'
    DISABLE = '关闭'

    @classmethod
    def chs2enkey(cls, chs_value):
        """
        常量中英文转换方法
        :param key: 要转换的常量值或名称
        :param to_english: 是否转换为英文，True 为转英文，False 为转中文
        :return: 转换后的结果，若未找到匹配则返回原始 key
        """
        # 获取类的所有属性
        attributes = {attr: getattr(cls, attr) for attr in dir(cls) if not callable(getattr(cls, attr)) and not attr.startswith("__")}
        
        # 中文转英文
        for en_key, cn_value in attributes.items():
            if cn_value == chs_value:
                return en_key
            
        raise ValueError(f'未找到匹配的常量值或名称: {chs_value}')

    @classmethod
    def en2chskey(cls, en_value):
        """
        常量中英文转换方法
        :param key: 要转换的常量值或名称
        :param to_english: 是否转换为英文，True 为转英文，False 为转中文
        :return: 转换后的结果，若未找到匹配则返回原始 key
        """
        # 获取类的所有属性
        attributes = {attr: getattr(cls, attr) for attr in dir(cls) if not callable(getattr(cls, attr)) and not attr.startswith("__")}
        
        # 英文转中文
        for en_key, cn_value in attributes.items():
            if en_key == en_value:
                return cn_value
            
        raise ValueError(f'未找到匹配的常量值或名称: {en_value}')

if __name__ == '__main__':
    print(Constant.chs2enkey(Constant.PROJECT_NAME))
    print(Constant.chs2enkey('项目名1'))
